// 语法：const newState = produce(oldState,(newState=>{对状态CRUD}))
import produce from "immer"

const initState = {
  size: 0
}

// 一个子store就是一个reducer
// 有两个参数：state 和 action
// action是修改状态的一个信号，action是一个对象，对象中有一个type，指定什么信号
// action中除了type之外，还有一个payload，payload就是传递的参数
function reducer(state = initState, { type, payload }) {  // 数据不可变
  // console.log("reducer收到信号了：", action);
  // 一个reducer操作流程是固定死的
  // 1）当信号来了，先对state进行深copy，通过一个包，叫immer
  // 2）根据action中的type和payload对老的state进行操作
  // 3）返回修改后那个最新的状态

  // produce的返回值是一个新状态
  return produce(state, (newState) => {
    // 根据action中的type和payload对老的state进行操作
    switch (type) {
      case "APP_SIZE_ADD":
        newState.size += payload
        break;
      case "APP_SIZE_SUB":
        newState.size -= payload;
        break;
      default:
        break;
    }
  })
}

export default reducer;